package com.panda.admin.login.entity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;
import java.util.List;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.panda.admin.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;

/**
* 商城菜单表
* @TableName system_menu
*/
@Setter
@Getter
@TableName("system_menu")
public class SystemMenu extends BaseEntity implements Serializable {

    /**
    * 系统菜单id
    */
    @NotNull(message="[系统菜单id]不能为空")
    @ApiModelProperty("系统菜单id")
    private Long id;
    /**
    * 父菜单id
    */
    @NotNull(message="[父菜单id]不能为空")
    @ApiModelProperty("父菜单id")
    private Long parentId;
    /**
    * 菜单名称
    */
    @NotBlank(message="[菜单名称]不能为空")
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("菜单名称")
    @Length(max= 40,message="编码长度不能超过40")
    private String menuName;
    /**
    * 访问路径
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("访问路径")
    @Length(max= 255,message="编码长度不能超过255")
    private String accessPath;

    /**
     * 访问路径
     */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("按钮授权")
    @Length(max= 255,message="编码长度不能超过255")
    private String perms;

    /**
     * 类型：0-目录，1-菜单，2-按钮
     */
    @ApiModelProperty("类型：0-目录，1-菜单，2-按钮")
    private Integer type;
    /**
     * 菜单图标
     */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("菜单图标")
    @Length(max= 255,message="编码长度不能超过255")
    private String icon;
    /**
    * 菜单序号
    */
    @ApiModelProperty("菜单序号")
    private Integer sort;

    @ApiModelProperty("父菜单名称")
    @TableField(exist = false)
    private String parentName;

    @ApiModelProperty("子菜单")
    @TableField(exist = false)
    private List<SystemMenu> child;
}
